From a3ae29962e40a1b81940d425f9179bc6a05243fd Mon Sep 17 00:00:00 2001 From: Aleksey Kladov Date: Sun, 24 Jul 2016 10:45:02 +0300 Subject: [PATCH] Ignore some config errors during init While it is generally terrible to silently ignore errors in the configuration files, it is acceptable in this case. Verbosity and color config have reasonable defaults, and we don't want to fail for simple commands like `cargo --version` just because of the garbage in the config file. fixed #2848 --- src/cargo/util/config.rs | 7 +++++-- tests/version.rs | 19 +++++++++++++++++++ 2 files changed, 24 insertions(+), 2 deletions(-) diff --git a/src/cargo/util/config.rs b/src/cargo/util/config.rs index e3a33eab0..28d890d76 100644 --- a/src/cargo/util/config.rs +++ b/src/cargo/util/config.rs @@ -287,8 +287,11 @@ impl Config { locked: bool) -> CargoResult<()> { let extra_verbose = verbose >= 2; let verbose = if verbose == 0 {None} else {Some(true)}; - let cfg_verbose = try!(self.get_bool("term.verbose")).map(|v| v.val); - let cfg_color = try!(self.get_string("term.color")).map(|v| v.val); + + // Ignore errors in the configuration files. + let cfg_verbose = self.get_bool("term.verbose").unwrap_or(None).map(|v| v.val); + let cfg_color = self.get_string("term.color").unwrap_or(None).map(|v| v.val); + let color = color.as_ref().or(cfg_color.as_ref()); let verbosity = match (verbose, cfg_verbose, quiet) { diff --git a/tests/version.rs b/tests/version.rs index bc1040ed1..b017830b2 100644 --- a/tests/version.rs +++ b/tests/version.rs @@ -56,3 +56,22 @@ fn version_works_without_rustc() { assert_that(p.cargo_process("version").env("PATH", ""), execs().with_status(0)); } + +#[test] +fn version_works_with_bad_config() { + let p = project("foo") + .file(".cargo/config", "this is not toml"); + assert_that(p.cargo_process("version"), + execs().with_status(0)); +} + +#[test] +fn version_works_with_bad_target_dir() { + let p = project("foo") + .file(".cargo/config", r#" + [build] + target-dir = 4 + "#); + assert_that(p.cargo_process("version"), + execs().with_status(0)); +} -- 2.30.2